# app/utils/database.py
from app import db
from app.models import DefaultChannelTemplate, Server, Channel, User, ServerMember
from datetime import datetime
import uuid


def seed_default_data():
    """填充默认数据"""
    # 创建默认频道模板
    templates = [
        {'template_id': 'text-general', 'name': '综合', 'type': 'text', 'position': 1},
        {'template_id': 'text-announce', 'name': '公告', 'type': 'text', 'position': 2},
        {'template_id': 'text-gaming', 'name': '游戏', 'type': 'text', 'position': 3},
        {'template_id': 'voice-chat', 'name': '闲聊', 'type': 'voice', 'position': 1},
        {'template_id': 'voice-gaming', 'name': '游戏', 'type': 'voice', 'position': 2},
        {'template_id': 'voice-music', 'name': '音乐', 'type': 'voice', 'position': 3}
    ]

    for temp in templates:
        if not DefaultChannelTemplate.query.get(temp['template_id']):
            new_template = DefaultChannelTemplate(**temp)
            db.session.add(new_template)

    # 创建默认服务器
    default_server = Server.query.get('server_default')
    if not default_server:
        default_server = Server(
            server_id='server_default',
            name='默认服务器',
            invite_code='DEFAULT',
            is_default=True
        )
        db.session.add(default_server)

        # 添加默认频道
        channels = [
            {'channel_id': 'channel1', 'name': '综合', 'type': 'text', 'position': 1},
            {'channel_id': 'channel2', 'name': '公告', 'type': 'text', 'position': 2},
            {'channel_id': 'channel3', 'name': '游戏', 'type': 'text', 'position': 3},
            {'channel_id': 'channel4', 'name': '闲聊', 'type': 'voice', 'position': 1},
            {'channel_id': 'channel5', 'name': '游戏', 'type': 'voice', 'position': 2},
            {'channel_id': 'channel6', 'name': '音乐', 'type': 'voice', 'position': 3}
        ]

        for channel_data in channels:
            channel_data['server_id'] = 'server_default'
            new_channel = Channel(**channel_data)
            db.session.add(new_channel)

    # 创建管理员用户（如果不存在）
    admin_user = User.query.get('00000000-0000-0000-0000-000000000001')
    if not admin_user:
        admin_user = User(
            user_id='00000000-0000-0000-0000-000000000001',
            username='Admin',
            email='admin@example.com',
            password_hash='placeholder',  # 在实际应用中应使用加密哈希
            is_registered=True
        )
        db.session.add(admin_user)

        # 将管理员添加到默认服务器作为所有者
        membership = ServerMember(
            membership_id=str(uuid.uuid4()),
            server_id='server_default',
            user_id=admin_user.user_id,
            role='owner',
            can_leave=False
        )
        db.session.add(membership)

    db.session.commit()